<?php

/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

defined('MOODLE_INTERNAL') || die();

require_once($CFG->dirroot . '/grade/report/user/lib.php');
require_once($CFG->dirroot . '/lib/outputcomponents.php');
require_once($CFG->libdir . '/outputcomponents.php');


// ===================================Messages==============================

/**
 * Сохраняет сообщения в базу данных.
 * Принимает имя отправителя, текст сообщения и время отправления.
 * @param string $name            
 * @param string $data            
 * @param int $time            
 * @return bool возвращается результат работы
 */
function set_message($name, $data, $time = null) {
    global $DB;
    $result;
    
    if (empty($time)) {
        $time = time();
    }
    
    $record           = new stdClass();
    $record->name     = $name;
    $record->message  = $data;
    $record->time     = $time;
    $record->archived = 0; 
    
    if (empty($name) OR empty($data)) {
        $result = false;
    } else {
        $result = $DB->insert_record('gb_messages', $record);
    }
    
    return $result;
}

/** (!)
 * Возвращает сообщения из базы данных.
 * 
 * @return array|mixed|null
 */
function get_messages()
{
    global $DB;
    $result = $DB->get_records('gb_messages', array('archived'=>0), 'time DESC');
    return $result;
}

/** (???)
 * Изменяет сообщение по передаваемому id.
 * Принимает id удаляемого сообщения и текст нового сообщения.
 * @param int $id            
 * @param string $data            
 * Возвращает результат изменения.
 * @return bool|mixed|mysqli_result
 */
function update_message($id, $data)
{
    global $DB;
    
    $record          = new sdtClass();
    $record->id      = $id;
    $record->message = $data;
    
    $query = "UPDATE gb_messages
                 SET gb_messages.message = '$data'
               WHERE gb_messages.id = $id;";
    
    $result = $DB->update_record('gb_messages', $record);
    return $result;
}

/** (!)
 * Удаляет сообщение по передаваемому id.
 * Возвращает результат удаления.
 * 
 * @param int $id            
 * @return bool|mixed|mysqli_result
 */
function delete_message($id) {
    global $DB;
    $result = $DB->delete_record('gb_messages', array('id'=>$id));
    return $result;
}

// ===================================Comments=============================

 /** (!)
  * 
 * Сохраняет комментарий в базу данных.
 * Принимает имя отправителя, 
 * @param string $name
 * текст комментария,
 * @param string $message
 * время отправления,
 * @param int $time
 * id сообщения, под которым оставлен комментарий.
 * @param int $message_id
 * Возвращает результат.
 * @return bool|mysqli_result
 */
function set_comment($name, $message, $time, $message_id)
{
    global $DB;
    
    $result;    
    
    if (empty($time)) {
        $time = time();
    }
    
    $record            = new stdClass();
    $record->name      = $name;
    $record->comment   = $message;
    $record->time      = $time;
    $record->messageid = $message_id;
    $record->archived  = 0;
    
    if (empty($message_id)) {
        $result = false;
    } else {
        $result = $DB->insert_record('gb_comments', $record);
    }
    return $result;
}

/** (!)
 * Возвращает комментарии из базы данных.
 * Принимает id сообщения, под которым оставлены комментарии. 
 * @param int $message_id            
 * @return array
 */
function get_comments($message_id) {
    global $DB;
    $result = $DB->get_records('gb_comments', array('messageid'=>$message_id));
    return $result;
}
/** (!)
 * Удаляет комментарий из базы данных.
 * Принимает id удаляемого комментария.
 * @param int $id            
 * Возвращает результат удаления.
 * @return bool|mixed|mysqli_result
 */
function delete_comment($id) {
    global $DB;
    $result = $DB->delete_record('gb_comments', array('id'=>$id));
    return $result;
}